Management of digital receipts

ABSTRACT

Digital receipts for purchases can be managed using a variety of techniques. Digital receipts can be obtained by an application running on a computing device and can be authenticated when not connected to a server, such as when offline. Digital receipts can be efficiently synchronized, such as when connected to a network for other reasons. A last synchronization timestamp can be obtained and sent to a server environment and digital receipts can be received that are new and/or have been updated since the last synchronization timestamp.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims the benefit of U.S. Provisional Application No.61/696,664, filed Sep. 4, 2012, which is incorporated by referenceherein.

BACKGROUND

Software applications, such as mobile software apps, can include theability for the user of the application to purchase digital goods foruse with the application. For example, a game application can includethe ability for the user to purchase in-game items. Similarly, a musicapplication can include the ability for the user to purchase music.

Software sellers need a way to establish a customer's identity andverify that the customer has paid for the digital goods. In a situationwhere a mobile device is connected intermittently, it can be importantthat software developers be able to provide products and services theircustomers have purchased without requiring a persistent or constantconnection to the Internet.

In order to ensure that such digital goods have been purchasedlegitimately, software applications can verify purchase information byconnecting to a server. However, it may not be possible to verifypurchase information when the software application is unable to connectto the server.

Therefore, there exists ample opportunity for improvement intechnologies related to managing digital receipts.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

Techniques and tools are described for managing digital receipts forpurchased content (e.g., digital goods and/or services). For example,digital receipts can be synchronized and stored locally at a mobiledevice. The digital receipts can be authenticated by the mobile devicewhen the mobile device is offline (e.g., the authentication can beperformed without requiring a connection to a server).

For example, a method can be provided for managing digital receipts forpurchases. The method comprises receiving, from a local applicationrunning on a mobile computing device, a request for receipts associatedwith the local application, obtaining, from a receipt store of themobile computing device, receipts associated with the local application,and providing, to the local application, the obtained receipts, wherethe obtained receipts are authenticated locally by the mobile computingdevice when the mobile computing device is offline.

As another example, a method can be provided for managing digitalreceipts for purchases. The method comprises, by the mobile computingdevice, performing a delta sync comprising obtaining a lastsynchronization timestamp, sending the last synchronization timestamp toa server environment, receiving, from the server environment, one ormore receipts, where the one or more receipts are new since the lastsynchronization timestamp and/or have been updated since the lastsynchronization timestamp, and saving the received one or more receiptsin a receipt store.

As another example, server systems comprising processing units andmemory can be provided for performing operations described herein. Forexample, a server system can be provided for signing digital receiptsusing digital signatures, providing digital receipts to mobile computingdevices, responding to synchronization requests, etc.

As described herein, a variety of other features and advantages can beincorporated into the technologies as desired.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example environment for managing digitalreceipts.

FIG. 2 is a flowchart of an example method for managing digital receiptssupporting offline authentication.

FIG. 3 is a flowchart of an example method for synchronizing digitalreceipts.

FIG. 4 is a diagram of an example control flow for making a purchase andgenerating a digital receipt.

FIG. 5 is a diagram of an example control flow for synchronizing digitalreceipts.

FIG. 6 is a diagram of an exemplary computing system in which somedescribed embodiments can be implemented.

FIG. 7 is an exemplary mobile device that can be used in conjunctionwith the technologies described herein.

FIG. 8 is an exemplary cloud-support environment that can be used inconjunction with the technologies described herein.

DETAILED DESCRIPTION Example 1 Overview

As described herein, various techniques and solutions can be applied tomanaging digital receipts. For example, digital receipts can beauthenticated when a device (e.g., a mobile computing device) isoffline. Digital receipts can also be synchronized between a device anda server environment.

Managing digital receipts when a device is offline refers to the abilityof the device to locally manage digital receipts without requiring aconnection (e.g., Internet connection) to another device, such as aserver. For example, when a device authenticates a digital receiptoffline, it authenticates the digital receipt locally (e.g., via areceipt service and/or application running on the device) withoutconnecting to an external device (e.g., via a wireless networkconnection, such as Wi-Fi network or cellular network). A device canmanage digital receipts offline (e.g., perform offline digital receiptoperations, such as authentication) even when the device is connected toa network (e.g., connected to a Wi-Fi or cellular network) if the deviceis not using the network (e.g., not connecting to a remote server) toperform the offline operations (e.g., authentication operations).

A digital receipt can be a receipt for a purchase (e.g., a transaction),such as a purchase for content related to an application (e.g., a localapplication running on the mobile device). A software application (app)running on a computing device (e.g., a mobile phone, tablet, or othertype of mobile computing device) can be provided by an independentsoftware vendor (ISV), which can refer to an entity that develops orsells a software application.

Receipts can be signed using a digital signature. Receipts can be signedby an entity (e.g., a trusted entity). For example, receipts can bedigitally signed by an operating system provider of a mobile computingdevice.

Example 2 Digital Receipts

In any of the examples herein, a digital receipt refers to any type ofdocument in a digital format that identifies a purchase or transactionand that supports digital authentication and/or validation. For example,a digital receipt can be a receipt for content purchased for use with anapplication. Content can be purchased by an application from anapplication store.

A digital receipt can comprise information (e.g., meta-data) describingthe purchase. For example, one or more of the following types ofinformation can be included in a receipt:

-   -   A unique identifier for the purchase (e.g., a unique transaction        identifier).    -   An identifier for the content that was purchased.    -   A unique identifier for the device on which the purchase was        made.    -   A unique identifier for the user that made the purchase (e.g., a        unique account identifier).    -   Other information related to the purchase, such as the purchase        price, the type of content that was purchased (e.g., consumable        content or durable content), etc.

The unique identifiers can be anonymized. For example, uniqueidentifiers (e.g., for the user and device) can be anonymized to protectthe user's privacy.

Example 3 Authenticating Digital Receipts

In any of the examples herein, digital receipts can be authenticated.For example, digital receipts can be signed using a digital signature(e.g., signed by a trusted entity, such as a software manufacturer oroperating system provider). The digital receipts can then beauthenticated using, at least in part, the digital signature.

Authentication can be performed by authenticating a digital signatureassociated with a digital receipt. Various types of authenticationsystems and digital signatures can be used for performing theauthentication. In a specific implementation, digital signatures andauthentication are implemented using XML Signature (XML-DSig), which isa digital signature standard published by W3C.

Example 4 Environment for Managing Digital Receipts

In any of the examples herein, methods can be provided forauthenticating digital receipts. For example, purchases can be made forcontent associated with applications. Digital receipts for the contentpurchases can be downloaded and stored locally (e.g., on a mobilecomputing device). Digital receipts can be locally authenticated (e.g.,without having to connect to another device, such as a server). Thecontent associated with a digital receipt can be redeemed (e.g.,activated or used) once the digital receipt has been authenticated.Digital receipts can be synchronized. For example, digital receipts canbe downloaded by a client device from a server environment for one ormore apps installed on the client device.

FIG. 1 is a diagram depicting an example environment 100 for managingdigital receipts. The example environment 100 includes a serverenvironment 110. For example, the server environment 110 can compriseone or more computer servers, database servers, network equipment,and/or other server environment related components and devices. Theserver environment 110 can be provided as a cloud computing environment.The server environment 110 can provide application services, such as anapplication store (app store).

The example environment 100 includes independent software vendor (ISV)systems 115. For example, the ISV systems 115 can comprise servercomputers, databases servers, and/or other computing resources. The ISVsystems 115 can represent systems associated with one or more ISVs.

The example environment 100 also includes a client device 120 connectedto the server environment 110 via a network 130 (e.g., net Internetand/or other types of network connections, such as Wi-Fi and/or cellularconnections). The client device 120 comprises applications (apps) 122, areceipt service 124, and a receipt store 126.

The client device 120 can manage digital receipts. For example, theclient device 120 can receive digital receipts from the serverenvironment 110. The client device 120 can store the digital receipts inthe receipt store 126. The client device 120 can authenticate thedigital receipts (e.g., offline without connecting to the serverenvironment 110). For example, the client device 120 can authenticatethe digital receipts using, at least in part, the receipt service 124(e.g., by authenticating digital signatures associated with the digitalreceipts). Once authenticated, the digital receipts can be utilized bythe apps 122. For example, an app can enable purchased content (e.g., asong, an in-game item, a new game level, or another type of content), asspecified by an authenticated digital receipt.

The client device 120 can also synchronize receipts. For example, whenone of the apps 122 of the client device 120 connects to the serverenvironment 110 (e.g., for a reason other than synchronizing receipts,which can be called an opportunistic synchronization), the client device120 can synchronize receipts for the application (e.g., just for theapplication that initiated the connection). Alternatively,synchronization can be performed for all apps 122. The synchronizationcan be performed to synchronize any new and/or updated digital receiptsthat are stored at the server environment 110 (e.g., in a receipt cache,not pictured). The new and/or updated receipts can be retrieved andstored in the receipt store 126. Performing a synchronization when theclient device 120 is already connected to the network 130 and/or serverenvironment 110 for another reason can save resources, such as batterypower and/or bandwidth.

The client device 120 can also synchronize receipts at other times. Forexample, the client device 120 can perform a daily (e.g., at night)synchronization (e.g., if the client device 120 is on a/c power andconnected to a Wi-Fi network). In some implementations, a fullsynchronization is performed on a periodic basis (e.g., weekly ormonthly).

The client device 120 can also communicate with the ISV systems 115 toperform various operations related to the applications 122 and/or thedigital receipts (e.g., stored in the receipt store 126), such asunlocking and delivering products, tracking purchases, and/or fulfillingpurchases. For example, an application of the client device (e.g., oneof the apps 122) can obtain a digital receipt (e.g., from the receiptstore 126) and transmit the digital receipt to the ISV that provided theapplication (e.g., by communicating with the ISV's systems 115).Alternatively, the receipt service 124 can transmit or provide thedigital receipt to the ISV (or respond to a request from the ISV). Inresponse, the ISV can perform various operations based on the receiveddigital receipt (e.g., based on meta-data contained in the digitalreceipt), such as verifying purchase authenticity, unlocking anddelivering a product, tracking purchases, fulfilling purchases, etc.

Example 5 Methods for Authenticating Digital Receipts

In any of the examples herein, methods can be provided for managingdigital receipts. FIG. 2 is a flowchart of an example method 200 formanaging digital receipts. At 210, a request for receipts is receivedfrom a local application installed on a mobile computing device. At 220,receipts are obtained from a receipt store located at the mobilecomputing device. At 230, the obtained receipts are provided to thelocal application. The receipts are authenticated offline. For example,the receipts can be authenticated by the local application and/or areceipt service running on the mobile computing device. The receipts canbe authenticated using digital signatures associated with the receipts.

Example 6 Synchronizing Digital Receipts

In any of the examples herein, digital receipts can be synchronized. Forexample, receipts can be synchronized between a server environment(e.g., one or more server computers, a distributed server environment,and/or a cloud environment) and one or more client computing devices(e.g., mobile computing devices and/or other types of computingdevices).

Synchronization can be performed in an efficient manner (e.g., to saveresources, such as battery power). For example, synchronization (e.g.,opportunistic synchronization) of digital receipts can be performed whena mobile computing device (e.g., a mobile phone, tablet, or other typeof mobile computing device) connects to a network for a reason otherthan to synchronize receipts, such as when downloading web content,retrieving email messages, making an app purchase, etc. In a specificimplementation, when an application running on a mobile computing device(a local application) connects via a network (e.g., via a Wi-Fi networkconnection, via a cellular data network connection, etc.) to make apurchase (e.g., an in-app purchase of content), the mobile computingdevice can synchronize receipts associated with the local application(e.g., receipts for content related to the local application that werepurchased from a different computing device).

There can be cases where a client mobile computing device is online andoffline intermittently. Information on the server environment may not bewhat is on the mobile device (e.g., content may have been purchased froma different device). In order to limit the amount of resources used on amobile device (e.g., battery, bandwidth, etc.), opportunisticsynchronization can be used (e.g., synchronize when already connected toa network and/or server environment for a different purpose).

Synchronization can be performed to synchronize digital receiptsaccording to a current context. For example, the current context cancomprise the mobile computing device being used and/or local applicationbeing used. For example, if a local application connects to a server tomake a purchase, then any new and/or updated digital receipts can bedownloaded that are associated with the local application and that arenew and/or updated with respect to the digital receipts already presenton the mobile computing device (e.g., in a receipt store).

In a specific implementation, when a local application connects to theserver (e.g., to make a purchase or for another reason), then alldigital receipts associated only with the local application thatinitiated the application are synchronized (i.e., digital receiptsassociated with other local applications are not synchronized).Performing opportunistic synchronization when a local applicationconnects to the server can save resources (e.g., battery, bandwidth,storage). In other implementations, digital receipts associated withother local applications (e.g., all other installed local applications)are synchronized as well.

A full sync can be performed on a periodic basis (e.g., nightly). Forexample, if a mobile device is using a/c power and connected to Wi-Fi,then the mobile device can automatically do a full sync (e.g., a deltasync for all applications installed on the mobile device) on a periodicbasis (e.g., a daily basis, such as at night).

In some implementations, before doing a purchase via an application, anopportunistic sync is performed that just syncs receipts for thatapplication. In other implementations, a full sync is performed (e.g.,for more than just the application making the purchase, such as allapplications on the mobile device that could have receipts to sync).

FIG. 3 is a flowchart of an example method 300 for managing digitalreceipts for purchases, including performing a delta sync. At 310, alast synchronization timestamp is obtained (e.g., by a mobile computingdevice). At 320, the last synchronization timestamp is sent to a serverenvironment. At 330, new and/or updated digital receipts (that are newand/or updated since the last synchronization timestamp) are receivedfrom the server environment. At 340, the received receipts are stored(e.g., in a receipt store). The received receipts can also beauthenticated.

The last synchronization timestamp can be updated to a present timestampso that when the next delta sync is performed new and/or updatedreceipts are received (that are new and/or updated since receiptsreceived at 330).

Example 7 Managing Digital Receipts

In any of the examples herein, management of digital receipts can beperformed by a mobile computing device. At least some of the managementoperations for the digital receipts can be performed by the mobilecomputing device while the mobile computing device is offline.Management of digital receipts can include authentication and/orverification of receipts, synchronization of receipts, and/or otheroperations related to receipts.

Receipts can be digitally signed by a trusted entity, such as anoperating system provider of an operating system running on a mobiledevice. Digital signatures can add a level of protection and securitybeyond what an ISV (e.g., application developer or publisher) canachieve by storing state of ownership in the local isolated storage fortheir app.

It is possible that purchases have been fulfilled that the ISV's codewas not made aware of, as in the case of a purchase from a differentdevice, or a purchase that completed in the background after closing ofthe ISV's app. In order for these receipts to be available for use atthe computing device, they can be synchronized. For example,synchronization can be performed to download any receipts that are notyet stored at the computing device (e.g., in the receipt store of thecomputing device). In some implementations, synchronization is onlyperformed for receipts of durable content (e.g., and not for receipts ofconsumable content).

In some implementations, an application calls a local receipt service(e.g., via an application programming interface (API)) to managereceipts (e.g., when the application is starting, and/or at othertimes). Calling the receipt service can cause receipts for theapplication to be synchronized (e.g., any new receipts not already inthe receipt store can be downloaded and stored). Calling the receiptservice can also cause authentication to be performed for receipts(e.g., to authenticate purchases of content).

The receipt service can be designed to return results quickly (e.g., toreturn 100 receipt results in less than one second). The receipt servicecan provide results without connecting to a server (e.g., when offline).Providing a local receipt store allows a mobile device to accessreceipts without expending resources (e.g., battery and networkbandwidth) needed to connect to a remote server.

Although it is possible for receipt requests to be made online (e.g., toa remote server), a default setting can be applied where receiptrequests are handled locally offline (e.g., via a local receipt store).In some implementations, a receipt request can queue a synchronizationaction to be performed at a later time.

In some implementations, one or more of the following synchronization(sync) procedures can be applied:

-   -   Sync can be done on a per-app basis    -   Scheduled sync can be performed:        -   on WiFi            -   Standard battery settings: queued delta-syncs happen                immediately            -   Battery saver mode: delta-sync will happen when plugged                into a/c power        -   on cellular data network            -   Standard data settings: sync will be queued and batched                in a single daily call            -   Low data use settings: sync will be paused and executed                on a monthly refresh task            -   Sync can be deferred while roaming

Synchronization can be performed based on when receipts were lastsynchronized. This type of synchronization can be called a delta-sync.In some implementations, a client (e.g., a mobile computing device)sends a last sync timestamp (e.g., comprising date and/or timeinformation) to a server environment, which returns new and/or updatedreceipts since the last sync timestamp. The server environment'sresponse can include an updated sync timestamp that can be cached by theclient and used, as the last sync timestamp, for the next delta-syncrequest.

Synchronization can be performed when an application is first installedor reinstalled. For example, a user may purchase a new mobile device,such as a new mobile phone. The user could reinstall one or more appsthat the user previously purchased. During the install (or at a latertime), a synchronization action can be performed to retrieve receiptsfrom a remote server environment. The receipts can be authenticated(e.g., by the installed app and/or by a receipt service running on themobile device). The authenticated receipts can be processed by the apps(e.g., to provide access to the content purchased by the user that isassociated with the receipts).

In some implementations, digital receipts are managed based on the typeof purchased content. Types of purchased content include durable contentand consumable content. Durable content refers to content that ispurchased once and can be used on multiple devices (e.g., on multipledevices that are all owned by one user or are associated with oneaccount) and that can be reused (e.g., used when an application isinstalled on a new device and/or used when an application is reinstalledon an existing device). Examples of durable content include digital songfiles, movie files, new levels or expansions for a game application,etc. Consumable content refers to content that can only be used (e.g.,redeemed) once. In a specific implementation, consumable content is tiedto the specific device for which the purchase was made (e.g., tied to aspecific device context). Examples of consumable content include in-gameassets (e.g., in-game money such as gold, in-game items, etc.).

Synchronization operations can take into account the type of purchasedcontent. For example, if an application is being installed on a newdevice, then all digital receipts for durable content can be downloadedwhen the new application is installed or first activated. Digitalreceipts for consumable content may not be downloaded when the newapplication is installed or first activated if they have already beenused (e.g., redeemed). In some implementations, digital receipts forconsumable content can still be downloaded but not used (e.g., to have arecord of past purchases even though the content cannot be redeemedagain).

Digital receipts can be utilized by an application publisher/developer(ISV). For example, an ISV can read digital receipts (e.g., using anapplication programming interface (API)) and provide certain informationabout the digital receipts (e.g., some or all of the meta-data) to theISV's servers (e.g., to track and/or fulfill purchases).

In some implementations, the following example pseudo-code can be usedto perform various synchronization operations:

On App First Install If App(MY_APP).IAPCount > 0 then WPS.GetReceipts(Since:null, MY_APP, out NewReceipts) SaveAndDeDupeReceipts(NewReceipts) On Purchase IAP If ReceiptCount > 0 then WPS.GetReceipts(Since:[Newest Receipt Purchase Date], MY_APP, out NewReceipts) ElseWPS.GetReceipts (Since:null, MY_APP, out NewReceipts)SaveAndDeDupeReceipts (NewReceipts) CheckIfIAPIsInReceiptStore (lookup:iapID, out iapIsOwned) If iapIsOwned then Show: Redownload Prompt ElseShow: Purchase prompt Nightly Receipt Sync If [Last Nightly SyncTimestamp] exists then [Last Nightly Sync Timestamp] = GetReceipts(Since:[Last Nightly Sync Timestamp], FOR_ALL_APPS, out NewReceipts)Else [Last Nightly Sync Timestamp] = GetReceipts (Since:null,FOR_ALL_APPS, out NewReceipts) SaveAndDeDupeReceipts (NewReceipts) //discards receipts for apps you don't have installed

In some implementations, management of digital receipts can include oneor more of the following features:

-   -   Ability to securely demonstrate ownership of any type of content        or service offline without prior knowledge of the type of        content (e.g., the digital signature of the digital receipt        associated with the content can be authenticated offline).    -   Ability to demonstrate ownership is portable, and can be        distributed from one system to another with or without the        associated content or service.    -   Unique identification of the user and the context (e.g., the        mobile device) from which the original purchase of the content        was made. Unique identification can be performed using        anonymized unique identifiers.    -   Ability to reconstruct a collection of purchased (e.g., owned)        content (e.g., all purchased content, including durable and/or        consumable content) in an optimized fashion which can reduce the        amount of data transferred between the server environment and        the computing devices (e.g., clients).

FIG. 4 is a diagram of an example control flow 400 for making a purchaseand generating a digital receipt. The example control flow 400 depicts aserver environment 410 and a client device 420 (e.g., a mobile computingdevice). The example control flow 400 also depicts the interaction ofoperations between the server environment 410 and the client device 420.For example, the control flow 400 depicts the client device 420performing operations to get a list of content (e.g., content availablefor purchase for a specific local application), purchasing content,receive a digital receipt for the purchased content, storing the digitalreceipt (e.g., in a local receipt store), authenticating the receiveddigital receipt (via a local receipt service) and redeeming the contentonce the digital receipt has been authenticated. In the example controlflow 400, the client device 420 depicts operations involving anapplication (app) running on the client device and a receipt servicerunning on the client device.

FIG. 5 is a diagram of an example control flow 500 for synchronizingdigital receipts. The example control flow 500 depicts a serverenvironment 510 and a client device 520 (e.g., a mobile computingdevice). The example control flow 500 also depicts the interaction ofoperations between the server environment 510 and the client device 520.For example, the control flow 500 depicts the client device 520performing operations to initiate a synchronization request. Thesynchronization request can comprise a last synchronization timestamp.The synchronization request can be a request to synchronize digitalreceipts for one or more applications installed on the client device 520(e.g., synchronize digital receipts that are new and/or updated sincethe last synchronization timestamp). The client device 520 receivesdigital receipts in response to the synchronization request, stores thereceived digital receipts (e.g., in a local receipt store) authenticatesthe received digital receipts (e.g., using a local receipt service), andredeems content as needed once the digital receipts have beenauthenticated.

Example 8 Computing Systems

FIG. 6 depicts a generalized example of a suitable computing system 600in which the described innovations may be implemented. The computingsystem 600 is not intended to suggest any limitation as to scope of useor functionality, as the innovations may be implemented in diversegeneral-purpose or special-purpose computing systems.

With reference to FIG. 6, the computing system 600 includes one or moreprocessing units 610, 615 and memory 620, 625. In FIG. 6, this basicconfiguration 630 is included within a dashed line. The processing units610, 615 execute computer-executable instructions. A processing unit canbe a general-purpose central processing unit (CPU), processor in anapplication-specific integrated circuit (ASIC) or any other type ofprocessor. In a multi-processing system, multiple processing unitsexecute computer-executable instructions to increase processing power.For example, FIG. 6 shows a central processing unit 610 as well as agraphics processing unit or co-processing unit 615. The tangible memory620, 625 may be volatile memory (e.g., registers, cache, RAM),non-volatile memory (e.g., ROM, EEPROM, flash memory, etc.), or somecombination of the two, accessible by the processing unit(s). The memory620, 625 stores software 680 implementing one or more innovationsdescribed herein, in the form of computer-executable instructionssuitable for execution by the processing unit(s).

A computing system may have additional features. For example, thecomputing system 600 includes storage 640, one or more input devices650, one or more output devices 660, and one or more communicationconnections 670. An interconnection mechanism (not shown) such as a bus,controller, or network interconnects the components of the computingsystem 600. Typically, operating system software (not shown) provides anoperating environment for other software executing in the computingsystem 600, and coordinates activities of the components of thecomputing system 600.

The tangible storage 640 may be removable or non-removable, and includesmagnetic disks, magnetic tapes or cassettes, CD-ROMs, DVDs, or any othermedium which can be used to store information and which can be accessedwithin the computing system 600. The storage 640 stores instructions forthe software 680 implementing one or more innovations described herein.

The input device(s) 650 may be a touch input device such as a keyboard,mouse, pen, or trackball, a voice input device, a scanning device, oranother device that provides input to the computing system 600. Forvideo encoding, the input device(s) 650 may be a camera, video card, TVtuner card, or similar device that accepts video input in analog ordigital form, or a CD-ROM or CD-RW that reads video samples into thecomputing system 600. The output device(s) 660 may be a display,printer, speaker, CD-writer, or another device that provides output fromthe computing system 600.

The communication connection(s) 670 enable communication over acommunication medium to another computing entity. The communicationmedium conveys information such as computer-executable instructions,audio or video input or output, or other data in a modulated datasignal. A modulated data signal is a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal. By way of example, and not limitation, communicationmedia can use an electrical, optical, RF, or other carrier.

The innovations can be described in the general context ofcomputer-executable instructions, such as those included in programmodules, being executed in a computing system on a target real orvirtual processor. Generally, program modules include routines,programs, libraries, objects, classes, components, data structures, etc.that perform particular tasks or implement particular abstract datatypes. The functionality of the program modules may be combined or splitbetween program modules as desired in various embodiments.Computer-executable instructions for program modules may be executedwithin a local or distributed computing system.

The terms “system” and “device” are used interchangeably herein. Unlessthe context clearly indicates otherwise, neither term implies anylimitation on a type of computing system or computing device. Ingeneral, a computing system or computing device can be local ordistributed, and can include any combination of special-purpose hardwareand/or general-purpose hardware with software implementing thefunctionality described herein.

For the sake of presentation, the detailed description uses terms like“determine” and “use” to describe computer operations in a computingsystem. These terms are high-level abstractions for operations performedby a computer, and should not be confused with acts performed by a humanbeing. The actual computer operations corresponding to these terms varydepending on implementation.

Example 9 Mobile Device

FIG. 7 is a system diagram depicting an exemplary mobile device 700including a variety of optional hardware and software components, showngenerally at 702. Any components 702 in the mobile device cancommunicate with any other component, although not all connections areshown, for ease of illustration. The mobile device can be any of avariety of computing devices (e.g., cell phone, smartphone, handheldcomputer, Personal Digital Assistant (PDA), etc.) and can allow wirelesstwo-way communications with one or more mobile communications networks704, such as a cellular, satellite, or other network.

The illustrated mobile device 700 can include a controller or processor710 (e.g., signal processor, microprocessor, ASIC, or other control andprocessing logic circuitry) for performing such tasks as signal coding,data processing, input/output processing, power control, and/or otherfunctions. An operating system 712 can control the allocation and usageof the components 702 and support for one or more application programs714. The application programs can include common mobile computingapplications (e.g., email applications, calendars, contact managers, webbrowsers, messaging applications), or any other computing application.Functionality 713 for accessing an application store can also be usedfor acquiring and updating application programs 714.

The illustrated mobile device 700 can include memory 720. Memory 720 caninclude non-removable memory 722 and/or removable memory 724. Thenon-removable memory 722 can include RAM, ROM, flash memory, a harddisk, or other well-known memory storage technologies. The removablememory 724 can include flash memory or a Subscriber Identity Module(SIM) card, which is well known in GSM communication systems, or otherwell-known memory storage technologies, such as “smart cards.” Thememory 720 can be used for storing data and/or code for running theoperating system 712 and the applications 714. Example data can includeweb pages, text, images, sound files, video data, or other data sets tobe sent to and/or received from one or more network servers or otherdevices via one or more wired or wireless networks. The memory 720 canbe used to store a subscriber identifier, such as an InternationalMobile Subscriber Identity (IMSI), and an equipment identifier, such asan International Mobile Equipment Identifier (IMEI). Such identifierscan be transmitted to a network server to identify users and equipment.

The mobile device 700 can support one or more input devices 730, such asa touchscreen 732, microphone 734, camera 736, physical keyboard 738and/or trackball 740 and one or more output devices 750, such as aspeaker 752 and a display 754. Other possible output devices (not shown)can include piezoelectric or other haptic output devices. Some devicescan serve more than one input/output function. For example, touchscreen732 and display 754 can be combined in a single input/output device.

The input devices 730 can include a Natural User Interface (NUI). An NUIis any interface technology that enables a user to interact with adevice in a “natural” manner, free from artificial constraints imposedby input devices such as mice, keyboards, remote controls, and the like.Examples of NUI methods include those relying on speech recognition,touch and stylus recognition, gesture recognition both on screen andadjacent to the screen, air gestures, head and eye tracking, voice andspeech, vision, touch, gestures, and machine intelligence. Otherexamples of a NUI include motion gesture detection usingaccelerometers/gyroscopes, facial recognition, 3D displays, head, eye,and gaze tracking, immersive augmented reality and virtual realitysystems, all of which provide a more natural interface, as well astechnologies for sensing brain activity using electric field sensingelectrodes (EEG and related methods). Thus, in one specific example, theoperating system 712 or applications 714 can comprise speech-recognitionsoftware as part of a voice user interface that allows a user to operatethe device 700 via voice commands. Further, the device 700 can compriseinput devices and software that allows for user interaction via a user'sspatial gestures, such as detecting and interpreting gestures to provideinput to a gaming application.

A wireless modem 760 can be coupled to an antenna (not shown) and cansupport two-way communications between the processor 710 and externaldevices, as is well understood in the art. The modem 760 is showngenerically and can include a cellular modem for communicating with themobile communication network 704 and/or other radio-based modems (e.g.,Bluetooth 764 or Wi-Fi 762). The wireless modem 760 is typicallyconfigured for communication with one or more cellular networks, such asa GSM network for data and voice communications within a single cellularnetwork, between cellular networks, or between the mobile device and apublic switched telephone network (PSTN).

The mobile device can further include at least one input/output port780, a power supply 782, a satellite navigation system receiver 784,such as a Global Positioning System (GPS) receiver, an accelerometer786, and/or a physical connector 790, which can be a USB port, IEEE 1394(FireWire) port, and/or RS-232 port. The illustrated components 702 arenot required or all-inclusive, as any components can be deleted andother components can be added.

Example 10 Cloud-Supported Environment

FIG. 8 illustrates a generalized example of a suitable implementationenvironment 800 in which described embodiments, techniques, andtechnologies may be implemented. In the example environment 800, varioustypes of services (e.g., computing services) are provided by a cloud810. For example, the cloud 810 can comprise a collection of computingdevices, which may be located centrally or distributed, that providecloud-based services to various types of users and devices connected viaa network such as the Internet. The implementation environment 800 canbe used in different ways to accomplish computing tasks. For example,some tasks (e.g., processing user input and presenting a user interface)can be performed on local computing devices (e.g., connected devices830, 840, 850) while other tasks (e.g., storage of data to be used insubsequent processing) can be performed in the cloud 810.

In example environment 800, the cloud 810 provides services forconnected devices 830, 840, 850 with a variety of screen capabilities.Connected device 830 represents a device with a computer screen 835(e.g., a mid-size screen). For example, connected device 830 could be apersonal computer such as desktop computer, laptop, notebook, netbook,or the like. Connected device 840 represents a device with a mobiledevice screen 845 (e.g., a small size screen). For example, connecteddevice 840 could be a mobile phone, smart phone, personal digitalassistant, tablet computer, and the like. Connected device 850represents a device with a large screen 855. For example, connecteddevice 850 could be a television screen (e.g., a smart television) oranother device connected to a television (e.g., a set-top box or gamingconsole) or the like. One or more of the connected devices 830, 840, 850can include touch screen capabilities. Touchscreens can accept input indifferent ways. For example, capacitive touchscreens detect touch inputwhen an object (e.g., a fingertip or stylus) distorts or interrupts anelectrical current running across the surface. As another example,touchscreens can use optical sensors to detect touch input when beamsfrom the optical sensors are interrupted. Physical contact with thesurface of the screen is not necessary for input to be detected by sometouchscreens. Devices without screen capabilities also can be used inexample environment 800. For example, the cloud 810 can provide servicesfor one or more computers (e.g., server computers) without displays.

Services can be provided by the cloud 810 through service providers 820,or through other providers of online services (not depicted). Forexample, cloud services can be customized to the screen size, displaycapability, and/or touch screen capability of a particular connecteddevice (e.g., connected devices 830, 840, 850).

In example environment 800, the cloud 810 provides the technologies andsolutions described herein to the various connected devices 830, 840,850 using, at least in part, the service providers 820. For example, theservice providers 820 can provide a centralized solution for variouscloud-based services. The service providers 820 can manage servicesubscriptions for users and/or devices (e.g., for the connected devices830, 840, 850 and/or their respective users).

Example 11 Implementations

Although the operations of some of the disclosed methods are describedin a particular, sequential order for convenient presentation, it shouldbe understood that this manner of description encompasses rearrangement,unless a particular ordering is required by specific language set forthbelow. For example, operations described sequentially may in some casesbe rearranged or performed concurrently. Moreover, for the sake ofsimplicity, the attached figures may not show the various ways in whichthe disclosed methods can be used in conjunction with other methods.

Any of the disclosed methods can be implemented as computer-executableinstructions or a computer program product stored on one or morecomputer-readable storage media and executed on a computing device(e.g., any available computing device, including smart phones or othermobile devices that include computing hardware). Computer-readablestorage media are any available tangible media that can be accessedwithin a computing environment (e.g., one or more optical media discssuch as DVD or CD, volatile memory components (such as DRAM or SRAM), ornonvolatile memory components (such as flash memory or hard drives)). Byway of example and with reference to FIG. 6, computer-readable storagemedia include memory 620 and 625, and storage 640. By way of example andwith reference to FIG. 7, computer-readable storage media include memoryand storage 720, 722, and 724. The term computer-readable storage mediadoes not include communication connections (e.g., 670, 760, 762, and764) such as signals and carrier waves.

Any of the computer-executable instructions for implementing thedisclosed techniques as well as any data created and used duringimplementation of the disclosed embodiments can be stored on one or morecomputer-readable storage media. The computer-executable instructionscan be part of, for example, a dedicated software application or asoftware application that is accessed or downloaded via a web browser orother software application (such as a remote computing application).Such software can be executed, for example, on a single local computer(e.g., any suitable commercially available computer) or in a networkenvironment (e.g., via the Internet, a wide-area network, a local-areanetwork, a client-server network (such as a cloud computing network), orother such network) using one or more network computers.

For clarity, only certain selected aspects of the software-basedimplementations are described. Other details that are well known in theart are omitted. For example, it should be understood that the disclosedtechnology is not limited to any specific computer language or program.For instance, the disclosed technology can be implemented by softwarewritten in C++, Java, Perl, JavaScript, Adobe Flash, or any othersuitable programming language. Likewise, the disclosed technology is notlimited to any particular computer or type of hardware. Certain detailsof suitable computers and hardware are well known and need not be setforth in detail in this disclosure.

Furthermore, any of the software-based embodiments (comprising, forexample, computer-executable instructions for causing a computer toperform any of the disclosed methods) can be uploaded, downloaded, orremotely accessed through a suitable communication means. Such suitablecommunication means include, for example, the Internet, the World WideWeb, an intranet, software applications, cable (including fiber opticcable), magnetic communications, electromagnetic communications(including RF, microwave, and infrared communications), electroniccommunications, or other such communication means.

The disclosed methods, apparatus, and systems should not be construed aslimiting in any way. Instead, the present disclosure is directed towardall novel and nonobvious features and aspects of the various disclosedembodiments, alone and in various combinations and sub combinations withone another. The disclosed methods, apparatus, and systems are notlimited to any specific aspect or feature or combination thereof, nor dothe disclosed embodiments require that any one or more specificadvantages be present or problems be solved.

The technologies from any example can be combined with the technologiesdescribed in any one or more of the other examples. In view of the manypossible embodiments to which the principles of the disclosed technologymay be applied, it should be recognized that the illustrated embodimentsare examples of the disclosed technology and should not be taken as alimitation on the scope of the disclosed technology. Rather, the scopeof the disclosed technology includes what is covered by the followingclaims. We therefore claim as our invention all that comes within thescope and spirit of the claims.

We claim:
 1. A method, implemented at least in part by a mobilecomputing device, for managing digital receipts for purchases, themethod comprising: by the mobile computing device when offline:receiving, from a local application running on the mobile computingdevice, a request for digital receipts associated with the localapplication; obtaining, from a receipt store of the mobile computingdevice, digital receipts associated with the local application; andproviding, to the local application, the obtained digital receipts;wherein the obtained digital receipts are authenticated locally by themobile computing device.
 2. The method of claim 1 wherein the obtaineddigital receipts are authenticated locally by the mobile computingdevice using one or more digital signatures associated with the obtaineddigital receipts.
 3. The method of claim 1 further comprising: by themobile computing device when offline: authenticating the obtaineddigital receipts using a receipt service of the mobile computing device.4. The method of claim 3 further comprising: based on results of theauthenticating, determining that the obtained digital receipts areauthentic; and redeeming content associated with the authentic digitalreceipts.
 5. The method of claim 1 wherein the obtained digital receiptsare processed by the local application to determine one or more purchasetransactions associated with the local application.
 6. The method ofclaim 5 wherein the one or more purchase transactions are for purchasesof content utilized by the local application, wherein the content is oneof durable content and consumable content.
 7. The method of claim 1further comprising: by the mobile computing device when online:receiving the digital receipts from a remote server, wherein the digitalreceipts are signed using a digital signature; and storing the digitalreceipts in the receipt store.
 8. The method of claim 1 wherein adigital receipt comprises meta-data, the meta-data comprising: a uniquepurchase identifier; a unique user identifier; and a unique mobilecomputing device identifier.
 9. A method, implemented at least in partby a mobile computing device, for managing digital receipts forpurchases, the method comprising: by the mobile computing device,performing a delta sync comprising: obtaining a last synchronizationtimestamp; sending the last synchronization timestamp to a serverenvironment; receiving, from the server environment, one or more digitalreceipts, wherein the one or more digital receipts are new since thelast synchronization timestamp and/or have been updated since the lastsynchronization timestamp; and saving the received one or more digitalreceipts in a receipt store of the mobile computing device.
 10. Themethod of claim 9 wherein last synchronization timestamp is associatedwith a local application of the mobile computing device, and wherein thereceived one or more digital receipts are associated with the localapplication.
 11. The method of claim 9 wherein the delta sync isperformed by the mobile computing device after the mobile computingdevice connects to the server environment for a purpose other than tosynchronize digital receipts.
 12. The method of claim 9 wherein thedelta sync is performed as an opportunistic synchronization.
 13. Themethod of claim 9 wherein the delta sync is performed when a localapplication connects to the server environment to make a purchase ofcontent.
 14. The method of claim 9 wherein last synchronizationtimestamp is associated with a local application of the mobile computingdevice, and wherein the delta sync is performed only for digitalreceipts associated with the local application.
 15. The method of claim9 wherein the delta sync is performed by the mobile computing device tosynchronize digital receipts for all applications installed on themobile computing device that could have new and/or updated digitalreceipts to receive.
 16. A server system comprising: one or moreprocessing units; memory; and one or more computer-readable storagemedia storing computer-executable instructions for causing the serversystem to perform operations for managing digital receipts for purchasescomprising: receiving, from a mobile computing device, a purchaserequest related to an application on the mobile computing device,wherein the purchase request is for one of durable content andconsumable content for the application on the mobile computing device;and in response to the purchase request, sending a digitally signeddigital receipt for the purchase to the mobile computing device; whereinthe digitally signed digital receipt supports authentication of thepurchase at the mobile computing device when the mobile computing deviceis not connected to the server system.
 17. The server system of claim 16wherein the operations further comprise: receiving, from the mobilecomputing device, a request to synchronize digital receipts; in responseto the request to synchronize digital receipts, sending digitally signeddigital receipts to the mobile computing device, wherein the digitallysigned digital receipts support authentication at the mobile computingdevice when the mobile computing device is not connected to the serversystem.
 18. The server system of claim 16 wherein the operations furthercomprise: receiving, from the mobile computing device, a lastsynchronization timestamp; sending, to the mobile computing device, oneor more digitally signed digital receipts, wherein the one or moredigitally signed digital receipts are new since the last synchronizationtimestamp and/or have been updated since the last synchronizationtimestamp.
 19. The server system of claim 18 wherein lastsynchronization timestamp is associated with a local application of themobile computing device, and wherein the sent one or more digitallysigned digital receipts are associated with the local application. 20.The server system of claim 16 wherein the digitally signed digitalreceipt comprises: a unique purchase identifier; a unique useridentifier; and a unique mobile computing device identifier.